<template>
  <div>
    <div class="footer_wrap">
      <!-- <a href="#/find">发现音乐</a>
      <a href="#/my">我的音乐</a>
      <a href="#/part">朋友</a> -->
      <!-- 声明式导航 -->
      <!-- router-link 最终会渲染成 a 标签, 会自动加 # -->
      <!-- 在明确有跳转链接的地方, 建议使用 router-link -->

      <!-- 声明式导航传参 -->
      <!-- 1. query 传参 -->
      <!-- 传递: 在路径上使用 ?参数1=值1&参数2=值2 -->
      <!-- 接收: $route.query.参数名 -->
      <!-- 2. 动态路径参数 -->
      <!-- 注意: 动态路径参数必须在路由配置上提前写好 :参数名 -->
      <!-- 传递: 在路径上 /值 -->
      <!-- 接收: $route.params.参数名 -->
      <span @click="go('/find', 'find')">发现音乐</span>
      <span @click="goAttr('/find', 'find')">发现音乐-传参</span>
      <span @click="go('/my', 'my')">我的音乐</span>
      <span @click="go('/part', 'part')">朋友</span>
    </div>
    <div class="top">
      <!-- 全局组件 -->
      <!-- 只是一个占位符, 将来匹配到路由规则后将对应的组件渲染在此处 -->
      <router-view />
    </div>
  </div>
</template>

<script>
export default {
  methods: {
    goAttr(path, name) {
      // 注意: 使用 path 跳转时, 会忽略掉 params
      // 所以, 只推荐一种搭配: path + query
      // 参数在路径上, 刷新不会丢失
      // 使用 path + query 传参 推荐
      this.$router.push({
        path,
        // query: {
        //   参数名: 值
        // }
        query: {
          name: '马云翔',
          age: 58
        }
      })

      // 刷新会丢失参数
      // 使用 name + params 传参
      // this.$router.push({
      //   name,
      //   params: {
      //     name: '辉煌',
      //     age: 8
      //   }
      // })
    },
    go(path, name) {
      // console.log(path)
      // $route 是路由参数对象, 用于获取路由参数的
      // $router 是路由导航对象, 用于做路由跳转的
      // 编程式导航
      // 1. 使用 path 进行跳转
      this.$router.push({
        path
      })
      // 路径跳转可以简写
      // 这个错误暂时不管(项目中统一处理) NavigationDuplicated: Avoided redundant navigation to current location: "/part".
      // this.$router.push(path)
      // 2. 使用 name 进行跳转
      // this.$router.push({
      //   name
      // })
    }
  }
};
</script>

<style scoped>
.footer_wrap {
  position: fixed;
  left: 0;
  top: 0;
  display: flex;
  width: 100%;
  text-align: center;
  background-color: #333;
  color: #ccc;
}
.footer_wrap a, span {
  flex: 1;
  text-decoration: none;
  padding: 20px 0;
  line-height: 20px;
  background-color: #333;
  color: #ccc;
  border: 1px solid black;
  cursor: pointer;
}
.footer_wrap a:hover, span:hover {
  background-color: #555;
}
.top {
  padding-top: 62px;
}
.active {
  background-color: #000 !important;
}
</style>